Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2005
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Захист інформації в комп’ютерних системах
Група:
КІ-44

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 3 з курсу „ Захист інформації в комп’ютерних системах ” Львів – 2005 Мета роботи: Створити програму, яка б загодовувала текст з файлу у BMP-файл без помітних змін у зображенні та потім при могла відновити закодований текст із BMP-файлу. Виконання роботи: У BMP-файлі із глибиною кольору 24 біт кожен піксель описується трьома байтами, що відповідають за червону, зелену та синю складові відповідно. Для того щоб закодувати символи тексту у такий BMP-файл використовуються молодші біти кожного байту. Їх зміна дуже незначно впливає на зміну кольору – зміна молодшого біта в одному байті змінює відтінок відповідного кольору у пікселі всього на , що при перегляді помітити практично неможливо. Для того, щоб при відтворенні тексту із BMP-файлу була відома довжина зашифрованого тексту, перед записом власне тексту у BMP-файл, я записую у BMP-файл двобайтове число у якому збережено довжину вхідного тексту у байтах. Текст програми: #include "stdafx.h" #include "stdlib.h" #include "io.h" #include "math.h" FILE * pic, * txt, * out; void error(); void encrypt(char*,char*,char*); // text into bmp void decrypt(char*,char*,char*); // text from bmp int main(int argc, char* argv[]) { char mode; if (argc!=4) error(); mode=argv[1][0]; if ( mode=='e') encrypt(argv[1],argv[2],argv[3]); else if ( mode=='d') decrypt(argv[1],argv[2],argv[3]); else { error(); return 1; } puts("\nDONE!"); fclose(pic); fclose(out); return 0; } void encrypt(char* a1,char* a2,char* a3) //into bmp { int i=0, count=0; unsigned int ch, buf; int text=open(a3,1,1); unsigned int textlength=filelength(text); // calculate text file length close(text); if ( ((pic = fopen(a2,"rb")) != NULL) && ((txt = fopen(a3,"rb")) != NULL) && ((out = fopen("mix.bmp","wb")) != NULL) ) printf("Files've been successfully open!\n"); else { printf("Files can't be open!\n"); exit(1); }; printf(" mode: %s = ENCRYPTING;\n input image file: %s;\n",a1,a2); printf(" input text file: %s;\n output (mixed) image file: mix.bmp.\n",a3); for (i=0;i<55;i++) fputc(fgetc(pic), out); // ------------ copy BMP header --- // ------------------------------------------- save text length to BMP file --- for(i=0;i<=15;i++){ // text length is stored with 16 bits fread(&buf,1,1,pic); // read byte from BMP if ((textlength&(int)pow(2,i))==0) // if bit #i of current byte = 0 buf = buf & 0xFFFE; // set youngest bit of BMP byte to 0 else buf = buf | 0x0001; // else - to 1 fwrite(&buf,1,1,out); // write 'mixed' byte to BMP } while(!feof(txt)) { // -------------------------------- encode the text --- ch = fgetc(txt); // read byte from text for(i=0;i<=7;i++){ // cycle within text byte fread(&buf,1,1,pic); // read byte from BMP if ( (ch&(int)pow(2,i)) == 0 ) // if bit #i from text byte = 0 buf = buf & 0xFE; // set youngest bit of BMP byte to 0 else buf = buf | 0x01; // else - to 1 fwrite(&buf,1,1,out); // write 'mixed' byte to BMP } } fread(&buf,1,1,pic); // ---------------------------------- copy the rest --- while(!feof(pic)) { fwrite(&buf,1,1,out); fread(&buf,1,1,pic); } fclose(txt); } void decrypt(char* a1,char* a2,char* a3) //from bmp { int i=0, count=0; unsigned int ch, buf, textlength, l=0; if ( ((pic = fopen(a2,"rb")) != NULL) && ((out = fopen(a3,"wb")) != NULL) ) printf("Files've been successfully open!\n"); else { printf("Files can't be open!\n"); exit(1); }; printf(" mode: %s = DECRYPTING;\n input (mixed) image file: %s;\n",a1,a2); printf(" output text file: %s.\n",a3); for (i=0;i<55;i++) fgetc(pic); // ------------------------ skip BMP header --- textlen...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини